import { PageParam } from '@/services/common'
import { covertTableData } from '@/utils/tableUtil'
import { request } from '@umijs/max'

export interface AutoReplyVO {
  /**
   * id
   */
  id: string
  /**
   * 关键字
   */
  keyword: string
  /**
   * 匹配类型
   */
  matchType: string
  /**
   * 标签
   */
  tagIds?: string
  /**
   * 回复类型
   */
  replyType?: string
  /**
   * 回复内容
   */
  replyContent?: string
  /**
   * 通知渠道
   */
  notifyIds?: string
  /**
   * 通知内容
   */
  notifyText?: string
  /**
   * 租户id
   */
  tenantId: string
}

export interface AutoReplyQueryDTO extends PageParam {
  /**
   * id
   */
  id: string
  /**
   * 关键字
   */
  keyword: string
  /**
   * 匹配类型
   */
  matchType: string
  /**
   * 标签
   */
  tagIds?: string
  /**
   * 回复类型
   */
  replyType?: string
  /**
   * 回复内容
   */
  replyContent?: string
  /**
   * 通知渠道
   */
  notifyIds?: string
  /**
   * 通知内容
   */
  notifyText?: string
  /**
   * 租户id
   */
  tenantId: string
}

export interface AutoReplyUpdateDTO {
  /**
   * id
   */
  id?: string
  /**
   * 关键字
   */
  keyword?: string
  /**
   * 匹配类型
   */
  matchType?: string
  /**
   * 标签
   */
  tagIds?: string
  /**
   * 回复类型
   */
  replyType?: string
  /**
   * 回复内容
   */
  replyContent?: string
  /**
   * 通知渠道
   */
  notifyIds?: string
  /**
   * 通知内容
   */
  notifyText?: string
  /**
   * 租户id
   */
  tenantId?: string
}

export const getAutoReplyById = async (id: string) => {
  return request<AutoReplyVO>(`/api/autoReply?id=${id}`, { method: 'GET' })
}

export const getAutoReplyList = async (params: AutoReplyQueryDTO) => {
  return request<Array<AutoReplyVO>>(`/api/autoReply/list`, { method: 'GET', params })
}

export const getAutoReplyPage = async (params: AutoReplyQueryDTO) => {
  let response = await request<Array<AutoReplyVO>>(`/api/autoReply/page`, { method: 'GET', params })
  return covertTableData(response)
}

export const updateAutoReply = async (autoReplyUpdateDTO: AutoReplyUpdateDTO) => {
  return request<AutoReplyVO>(`/api/autoReply/update`, { method: 'POST', data: autoReplyUpdateDTO })
}

export const saveAutoReply = async (autoReplyUpdateDTO: AutoReplyUpdateDTO) => {
  return request<AutoReplyVO>(`/api/autoReply/save`, { method: 'POST', data: autoReplyUpdateDTO })
}

export const removeAutoReply = async (id: string) => {
  return request<boolean>(`/api/autoReply/remove?id=${id}`, { method: 'POST' })
}
